home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Add-On
/
Workbench Add-On - Volume 1.iso
/
BBS-Archive
/
Comm
/
AmiTCP30b2.lha
/
src
/
appl
/
qwriter
/
main.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-08-10
|
4KB
|
203 lines
static const char version[] = "$VER: qwriter 2.0 (13.8.93)";
/*
* Contains main() for qwriter
* $Header: /u/opi/86/jraja/ohtatcp/amitcp/util/qwriter/RCS/main.c,v 2.2 1993/08/10 20:46:23 jraja Exp $
* $Log: main.c,v $
* Revision 2.2 1993/08/10 20:46:23 jraja
* Added version string.
*
* Revision 2.1 1993/04/20 18:48:04 puhuri
* Table for distribution was too small by one.
*
* Revision 2.0 93/03/20 17:31:42 17:31:42 ppessi (Pekka Pessi)
* initial netlib version..
*
* Revision 1.7 93/03/19 16:49:42 16:49:42 puhuri (Markus Peuhkuri)
* Add possibility to make non-uniform distribution of length of
* replied data in telnet-server.
*
* Revision 1.6 93/03/19 14:44:43 14:44:43 puhuri (Markus Peuhkuri)
* Add modifications made by too and ppessi.
*
* Revision 1.5 93/03/16 19:13:59 19:13:59 too (Tomi Ollila)
* code fixes
*
* Revision 1.4 93/03/16 10:42:28 10:42:28 puhuri (Markus Peuhkuri)
* Added AmiTCP stuff.
*
* Revision 1.3 93/03/15 18:59:27 18:59:27 puhuri (Markus Peuhkuri)
* Cleaned code
*
*/
#ifdef AMIGA
#include <exec/types.h>
#include <sys/types.h>
#if __SASC
#include <proto/socket.h>
#elif __GNUC__
#include <inline/socket.h>
#else
#include <clib/socket_protos.h>
#endif
#endif /* AMIGA */
#ifdef __STDC__
#include <stdlib.h>
#endif
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <stdio.h>
#include "qwriter.h"
#include <string.h> /* after qwriter.h */
#define TEST_NFS 1
#define TEST_FTP 2
#define TEST_TELNET 3
#define SERVER 1
#define CLIENT 2
#define FALSE 0
#define TRUE 1
char *failure(char *txt)
{
fprintf(stderr,txt);exit(1);return "F";
}
int
main(int argc,char **argv)
{
int i;
int act = SERVER, /* Some reasionable values */
type = TEST_TELNET,
rounds = 1,
length = 1000,
bufsiz = BUFFERLEN,
port1 = 1500,
port2 = 1501,
chk = FALSE,
*dtable = NULL;
char *host = "127.0.0.1"; /* "localhost" */
double tval = NFSTIMEOUT;
#ifdef NODB
MyHost = host;
#endif
#define ARG2 ((i < argc -1) ? argv[++i] :failure("Missign argument"))
for(i = 1 ; i < argc; i++)
if(*argv[i] == '-'){
switch(*(argv[i]+1)){
case 's': /* We are server */
act = SERVER;
break;
case 'c': /* We are client */
act = CLIENT;
break;
case 't':
switch(*ARG2){ /* Store type of test */
case 't':
type = TEST_TELNET;
break;
case 'n':
type = TEST_NFS;
break;
case 'f':
type = TEST_FTP;
break;
default:
failure("unknown type\n");
}
break;
case 'n': /* Rounds in test */
rounds = atoi(ARG2);
break;
case 'l': /* Length argument */
length = atoi(ARG2);
break;
case 'b': /* Size of buffer */
bufsiz = atoi(ARG2);
break;
case 'p': /* Port number */
port1 = atoi(ARG2);
break;
case 'h': /* Name of host */
host = ARG2;
#ifdef NODB
MyHost = host;
#endif
break;
case 'q': /* Checksum verification */
chk = TRUE;
break;
case 'd': /* Distribution of characters */
{
int j, k;
char *p,*p0;
p0 = ARG2;
for(j=1, p = p0 - 1 ; p = strchr( p + 1, ','); j++)
;
if(dtable = (int *)malloc((j + 1) * sizeof(int))){
dtable[0] = j + 1;
for(k = 1, p = p0; k <= j + 1; k++){
dtable[k] = atoi(p);
p = strchr(p, ',') + 1;
DP(("%ld,", dtable[k]));
}
}
}
break;
case 'T': /* Timeout value */
tval = atof(ARG2);
break;
}
}
printf("act=%ld type=%ld rounds=%ld length=%ld bufsiz=%ld\n",
act, type, rounds, length, bufsiz);
printf("port1=%ld port2=%ld chk=%ld host='%s' tval=%lf\n",
port1, port2, chk, host, tval);
if(act == SERVER)
switch(type){
case TEST_TELNET:
if(!dtable)
if((dtable=(int *)malloc(2 * sizeof(int)))==NULL)
break;
else {
dtable[0] = 1;
dtable[1] = length;
}
telnet_server(port1, dtable, chk);
break;
case TEST_FTP:
ftp_server(port1, bufsiz, chk);
break;
case TEST_NFS:
nfs_server(host, port1, bufsiz, length, chk);
break;
}
else
switch(type){
case TEST_TELNET:
telnet_client(host, port1, rounds, bufsiz, chk);
break;
case TEST_FTP:
ftp_client(host, port1, length, bufsiz, chk);
break;
case TEST_NFS:
nfs_client(host, port1, rounds, length, bufsiz, tval, chk);
break;
}
if(dtable)
free(dtable);
}